数据迁移

E-MapReduce(简称EMR)支持将您本地自建的Kudu集群迁移至EMR上。本文为您介绍如何迁移自建Kudu集群的数据到E-MapReduce上的Hadoop集群。

前提条件

  • 您已自建Kudu集群。

  • 已创建E-MapReduce的Hadoop集群,并选择了Kudu服务,详情请参见创建集群

背景信息

EMR Kudu支持社区1.10以及1.11版本,可以使用社区提供的Backup和Restore的工具进行数据的迁移。基本流程示意图如下所示。kudu

操作步骤

  1. 执行以下命令,查看待迁移Kudu表的名称列表。

    Kudu table list {YourKuduMasterAddress}
    说明

    本文代码示例中的{YourKuduMasterAddress}为Kudu集群的Master节点内网IP地址,多个IP地址之间使用英文逗号(,)隔开。

  2. 使用Kudu Backup工具备份现有的Kudu集群表。

    默认的Kudu Backup可以根据现有Backup信息来执行增量或者全量备份。

    说明

    首次备份将执行全量备份,即完整复制所有指定表的数据。后续备份自动识别之前的备份点,仅备份自上次备份以来变更的数据,实现增量备份,从而节省存储空间和时间。

    数据备份时,指定的--kuduMasterAddresses是Kudu集群的Master节点内网IP地址。

    • 使用OSS作为中间存储

      spark-submit --class org.apache.kudu.backup.KuduBackup kudu-backup2_2.11-1.10.0.jar \
        --kuduMasterAddresses master1-host,master-2-host,master-3-host \
        --rootPath oss://{your_BucketName}/kudu-backups {YourTableList}
      说明

      本文代码示例中的{your_BucketName}为您OSS Bucket的名称,{YourTableList}为您需要备份的Kudu表的列表。

    • 使用HDFS作为中间存储

      spark-submit --class org.apache.kudu.backup.KuduBackup kudu-backup2_2.11-1.10.0.jar \
        --kuduMasterAddresses master1-host,master-2-host,master-3-host \
        --rootPath hdfs://{YourHDFSCluster}/kudu-backups {YourTableList}
      说明

      本文代码示例中的{YourHDFSCluster}为Hadoop集群的地址。

  3. 检查Kudu Backup目录相关数据。

  4. 在EMR Kudu集群运行Restore命令, 将数据导入到EMR Kudu集群。

    默认命令如下:

    • 使用OSS作为中间存储

      spark-submit --class org.apache.kudu.backup.KuduRestore kudu-backup2_2.11-1.10.0.jar \
        --kuduMasterAddresses master1-host,master-2-host,master-3-host \
        --rootPath oss://{your_BucketName}/kudu-backups {YourTableList}
      说明

      导入数据时,指定的--kuduMasterAddresses是目标EMR Kudu集群的Master节点内网IP地址。

    • 使用HDFS作为中间存储

      spark-submit --class org.apache.kudu.backup.KuduRestore kudu-backup2_2.11-1.10.0.jar \
        --kuduMasterAddresses master1-host,master-2-host,master-3-host \
        --rootPath hdfs://{YourHDFSCluster}/kudu-backups {YourTableList}
  5. 检查EMR Kudu集群上的数据、表名以及通过计算引擎查找表的数据是否一致。